
//	此资源由 58学课资源站 收集整理
//	想要获取完整课件资料 请访问：58xueke.com
//	百万资源 畅享学习
package com.imooc.controller;

import com.imooc.grace.result.GraceJSONResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping("file")
@Slf4j
@RequiredArgsConstructor //完成初始化
public class FileController {

    //    www.imooc-hire.com
    public static final String host = "http://172.17.133.99:8000/";

//    private final FileUploadConfig fileUploadConfig ;

        /**
     * 上传用户头像文件
     * @param file 用户上传的头像文件
     * @param userId 用户ID，用于生成文件名
     * @param request HTTP请求对象
     * @return 返回包含头像访问URL的JSON结果
     * @throws IOException 文件操作异常
     */
//    @PostMapping("uploadFace")
//    public GraceJSONResult uploadFace(
//            @RequestParam("file")MultipartFile  file,
//            @RequestParam("userId")String userId,
//            HttpServletRequest request ) throws IOException {
//        String originalFilename = file.getOriginalFilename(); // 获取原始文件名
////        String originalFilename = file.getName(); // 获取原始文件名
//        // 获取文件后缀
//        String suffixName = originalFilename.substring(originalFilename.lastIndexOf("."));
//        //生成文件名
//        String newFileName = userId + suffixName;
//        // 组成文件存储文件
////        String rootPath = "/temp" + File.separator;
////        String filePath = rootPath + File.separator + "face" + File.separator + newFileName;
//        // ${user.dir}/uploads/file/123123.png
//        String uploadDir = fileUploadConfig.getPath() + File.separator + "file" + File.separator + newFileName;
//        File newFile = new File(uploadDir);
//        // 文件夹不存在就创建
//        if(!newFile.getParentFile().exists()){
//            newFile.getParentFile().mkdirs();
//        }
//        file.transferTo(newFile);
//        String userFaceUrl = host + "static/file/" + newFileName;
////        String userFaceUrl = host + fileUploadConfig.getPath() + File.separator + "file" + File.separator  + newFileName;
//        return GraceJSONResult.ok(userFaceUrl);
//    }
        @PostMapping("uploadFace")
        public GraceJSONResult uploadFace1(@RequestParam("file") MultipartFile file,
                                           @RequestParam("userId") String userId,
                                           HttpServletRequest request) throws Exception {

            // 获得文件原始名称
            String filename = file.getOriginalFilename();

//        "abc.123.abc.png"
            // 根据文件名中最后一个点的位置向后进行截取
            String suffixName = filename.substring(filename.lastIndexOf("."));

            // 文件新的名称
            String newFileName = userId + suffixName;

            // 设置文件存储的路径，可以存放在指定的路径中，windows用户需要修改为对应的盘符
            String rootPath = "F:\\project\\lsc-hire-dev\\service-file-5001\\temp" + File.separator;
            // 图片存储的完全路径
            String filePath = rootPath + File.separator + "face" + File.separator + newFileName;

            File newFile = new File(filePath);
            if (!newFile.getParentFile().exists()) {
                // 如果目标文件所在目录不存在，则创建父目录
                newFile.getParentFile().mkdirs();
            }

            // 将内存中的文件数据写入到磁盘
            file.transferTo(newFile);

            // 生成web可以被访问的url地址
            String userFaceUrl = host + "static/face/" + newFileName;

            return GraceJSONResult.ok(userFaceUrl);
        }


}
